# 选择排序需要循环两次
aList = [4,5,7,3,2,6,9,8,1,0,10]
def selectSort(aList):
    n = len(aList)
    for i in range(n):
        for j in range(i,n):
            if aList[i]>aList[j]:
                aList[i], aList[j] = aList[j], aList[i]
    return aList
print(selectSort(aList))
# 每一个数需要后面所有待排序的数比较！如果有比这个数更小的就交换位置！
# 选择排序排好序的数字在前面而不是后面！

# 选择排序是对冒泡的优化，只记录并且改变最小下标，遍历一轮只交换一次数据，
# 上面这种写法其实是冒泡排序和选择排序之间的写法，理解起来和选择排序很像
def selectSort(arr):
    n = len(arr)
    for i in range(n):
        # minVal = i 如果起始元素最大就不用换了，是0的话最大值就被换到前面去了！！！！
        minVal = i
        for j in range(i+1,n):
            if arr[minVal] > arr[j]:
                minVal = j
        arr[minVal],arr[i] = arr[i], arr[minVal]
    return arr
print(selectSort(aList))